# Agruparresumen_tipo <- df_geo_completo %>%filter(Tipo !="NO DEFINIDO") %>%count(Tipo, name ="Atenciones") %>%# 'name' define el nombre de la columna conteoarrange(desc(Atenciones))# Gráficoplot_ly(resumen_tipo, x =~Atenciones, y =~reorder(Tipo, Atenciones), type ='bar', orientation ='h',marker =list(color ='#2980b9')) %>%layout(title ="Atenciones según Tipo de Establecimiento",xaxis =list(title ="Nro. Atenciones"), yaxis =list(title =""))
resumen_top20 <- df_geo_completo %>%filter(Nombre_Establecimiento !="DESCONOCIDO") %>%group_by(Nombre_Establecimiento, Departamento) %>%# Incluyo Dept para contextosummarise(Atenciones =n(), .groups ='drop') %>%arrange(desc(Atenciones)) %>%head(20)plot_ly(resumen_top20, x =~Atenciones, y =~reorder(Nombre_Establecimiento, Atenciones), type ='bar', orientation ='h',text =~paste(Departamento), # Muestra la región al pasar el mousemarker =list(color ='#8e44ad')) %>%layout(title ="Top 20 Establecimientos con Mayor Producción",xaxis =list(title ="Nro. Atenciones"), yaxis =list(title =""),margin =list(l =180)) # Margen izquierdo amplio para nombres largos
library(leaflet)library(sf)library(geodata)library(dplyr)# 1. PREPARACIÓN DE DATOS (Dos partes)# A. Calcular el "Campeón" por Región (El que más produce)top_productor_region <- df_geo_completo %>%# Filtramos basurafilter(Tipo !="NO DEFINIDO", Departamento !="SIN INFORMACIÓN") %>%# Normalizamos nombres de departamentomutate(Departamento_Norm =case_when( Departamento %in%c("LIMA", "LIMA METROPOLITANA", "LIMA REGIÓN") ~"LIMA", Departamento =="CALLAO"~"CALLAO",TRUE~ Departamento ) ) %>%# Contamos atenciones por EESSgroup_by(Departamento_Norm, Nombre_Establecimiento) %>%summarise(Atenciones_EESS =n(), .groups ='drop_last') %>%# Seleccionamos el #1 de cada regiónslice_max(Atenciones_EESS, n =1, with_ties =FALSE) %>%rename(Top_EESS_Nombre = Nombre_Establecimiento, Top_EESS_Valor = Atenciones_EESS)# B. Calcular el Total de EESS por Región (La unidad de análisis principal)data_mapa_oferta <- df_geo_completo %>%filter(Tipo !="NO DEFINIDO", Departamento !="SIN INFORMACIÓN") %>%mutate(Departamento_Norm =case_when( Departamento %in%c("LIMA", "LIMA METROPOLITANA", "LIMA REGIÓN") ~"LIMA", Departamento =="CALLAO"~"CALLAO",TRUE~ Departamento ) ) %>%group_by(Departamento_Norm) %>%summarise(Total_RENAES =n_distinct(renaes) # <--- AQUÍ CAMBIAMOS LA UNIDAD DE ANÁLISIS ) %>%# C. Unimos con el dato del "Campeón"left_join(top_productor_region, by ="Departamento_Norm")# 2. OBTENER GEOMETRÍA (GADM)mapa_peru_gadm <-gadm(country ="PER", level =1, path =tempdir()) %>%st_as_sf()# 3. UNIR DATOS CON EL MAPAmapa_oferta_final <- mapa_peru_gadm %>%mutate(NAME_UPPER =toupper(NAME_1)) %>%left_join(data_mapa_oferta, by =c("NAME_UPPER"="Departamento_Norm"))# 4. PALETA (Verde: Asociado a Infraestructura/Recursos)paleta_oferta <-colorBin(palette ="Greens", domain = mapa_oferta_final$Total_RENAES,bins =5,na.color ="#ecf0f1")# 5. GENERAR MAPA LEAFLETleaflet(mapa_oferta_final) %>%addProviderTiles(providers$CartoDB.Positron) %>%setView(lng =-75, lat =-9, zoom =5) %>%addPolygons(fillColor =~paleta_oferta(Total_RENAES),weight =1, opacity =1, color ="white", dashArray ="3", fillOpacity =0.7,# Efecto HighlighthighlightOptions =highlightOptions(weight =3, color ="#2c3e50", bringToFront =TRUE),# ETIQUETA SIMPLE (Al pasar rápido el mouse)label =~paste0(NAME_1, ": ", Total_RENAES, " Estab."),# POPUP DETALLADO (Al hacer clic o esperar)popup =~paste0("<div style='font-family: sans-serif;'>","<h4 style='margin-bottom:5px; color:#27ae60;'>", NAME_1, "</h4>","<b>Oferta Disponible:</b> ", Total_RENAES, " Establecimientos<br><hr>","<span style='font-size:0.9em; color:#7f8c8d;'>Mayor Productor:</span><br>","<b>", Top_EESS_Nombre, "</b><br>","(", format(Top_EESS_Valor, big.mark=","), " atenciones)","</div>" ) ) %>%addLegend(pal = paleta_oferta, values =~Total_RENAES, opacity =0.7, title ="Nro. EESS",position ="bottomright" )
Code
# Tabla para descargadata_export_oferta <- data_mapa_oferta %>%rename(Departamento = Departamento_Norm, Cantidad_EESS = Total_RENAES,EESS_Mas_Productivo = Top_EESS_Nombre,Produccion_Maxima = Top_EESS_Valor) %>%arrange(desc(Cantidad_EESS))make_download_table(data_export_oferta, "Oferta_Regional_EESS")